home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / f2c / may_5_92.lha / f2c.VMay_5_1992 / libF77 / main.c < prev    next >
C/C++ Source or Header  |  1992-05-07  |  1KB  |  96 lines

  1. /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
  2.  
  3. #include "stdio.h"
  4. #include "signal.h"
  5.  
  6. #ifndef SIGIOT
  7. #define SIGIOT SIGABRT
  8. #endif
  9.  
  10. #ifdef NO__STDC
  11. #define ONEXIT onexit
  12. extern void f_exit();
  13. #else
  14. #ifdef __STDC__
  15. #include "stdlib.h"
  16. extern void f_exit(void);
  17. #ifndef NO_ONEXIT
  18. #define ONEXIT atexit
  19. extern int atexit(void (*)(void));
  20. #endif
  21. #else
  22. #ifndef NO_ONEXIT
  23. #define ONEXIT onexit
  24. extern void f_exit();
  25. #endif
  26. #endif
  27. #endif
  28.  
  29. extern void sig_die();
  30.  
  31. static void sigfdie(n)
  32. {
  33. sig_die("Floating Exception", 1);
  34. }
  35.  
  36.  
  37. static void sigidie(n)
  38. {
  39. sig_die("IOT Trap", 1);
  40. }
  41.  
  42. #ifdef SIGQUIT
  43. static void sigqdie(n)
  44. {
  45. sig_die("Quit signal", 1);
  46. }
  47. #endif
  48.  
  49.  
  50. static void sigindie(n)
  51. {
  52. sig_die("Interrupt", 0);
  53. }
  54.  
  55.  
  56.  
  57. static void sigtdie(n)
  58. {
  59. sig_die("Killed", 0);
  60. }
  61.  
  62.  
  63. int xargc;
  64. char **xargv;
  65.  
  66. main(argc, argv)
  67. int argc;
  68. char **argv;
  69. {
  70. xargc = argc;
  71. xargv = argv;
  72. signal(SIGFPE, sigfdie);    /* ignore underflow, enable overflow */
  73. signal(SIGIOT, sigidie);
  74. #ifdef SIGQUIT
  75. if(signal(SIGQUIT,sigqdie) == SIG_IGN)
  76.     signal(SIGQUIT, SIG_IGN);
  77. #endif
  78. if(signal(SIGINT, sigindie) == SIG_IGN)
  79.     signal(SIGINT, SIG_IGN);
  80. signal(SIGTERM,sigtdie);
  81.  
  82. #ifdef pdp11
  83.     ldfps(01200); /* detect overflow as an exception */
  84. #endif
  85.  
  86. f_init();
  87. #ifndef NO_ONEXIT
  88. ONEXIT(f_exit);
  89. #endif
  90. MAIN__();
  91. #ifdef NO_ONEXIT
  92. f_exit();
  93. #endif
  94. exit(0);    /* exit(0) rather than return(0) to bypass Cray bug */
  95. }
  96.